《高性能網(wǎng)站建設(shè)指南》閱讀筆記_規(guī)則9- 減少DNS查找
發(fā)布時(shí)間:2013-11-22 瀏覽:389打印字號(hào):大中小
首先解釋幾個(gè)名詞:
DNS:大家都知道是域名系統(tǒng)
TTL值(Time- to - live,生存時(shí)間):
每個(gè)記錄都有一個(gè)生存時(shí)間(TTL)值,這個(gè)值就決定了這個(gè)紀(jì)錄什么時(shí)候刷新,進(jìn)而被其他查詢?nèi)〈T赥TL到達(dá)之前,Windows解析將返回緩存中的查詢結(jié)果,而不會(huì)開始新的DNS查詢。
對(duì)美國(guó)10大網(wǎng)站的統(tǒng)計(jì),他們發(fā)給用戶的TTL從1分鐘到1小時(shí)不等,這是由綜合考慮和歷史因素造成的。這些擁有巨大數(shù)量用戶的頂級(jí)網(wǎng)站都在努力做到當(dāng)服務(wù)器,虛擬ip地址(http://baike.baidu.com/view/711543.htm)或者聯(lián)合定位掉線時(shí)提供快速故障轉(zhuǎn)移,這也是yahoo提供較短的ttl的原因,但是Myspace則定位到一個(gè)聯(lián)合定位工具,對(duì)于當(dāng)前網(wǎng)絡(luò)情況,故障轉(zhuǎn)移不是很重要,因此使用較長(zhǎng)的TTL以減少DNS查找,也降低了其名稱服務(wù)器的負(fù)載。
DNS Client 服務(wù)-- --> 在操作系統(tǒng)客戶端的配置:
可以使用控制臺(tái)的IPConfig命令來觀測(cè)緩存容量并清空緩存。
通過以下的命令就可以顯示緩存的容量,并將結(jié)果傳送給More指令,從而將結(jié)果一次性在一頁(yè)中顯示出來:ipconfig/displaydns
使用一下這個(gè)命令來清空緩存:ipconfig/flushdns
Keep-Alive: http構(gòu)建在TCP上,在http的早期實(shí)現(xiàn)中,每個(gè)http請(qǐng)求都要打開一個(gè)socket連接,這樣做效率很低,因?yàn)橐粋€(gè)web頁(yè)面中很多的http請(qǐng)求都指向同一個(gè)服務(wù)器。例如很多web頁(yè)面中的圖片發(fā)起的請(qǐng)求都指向一個(gè)圖片服務(wù)器。持久連接的引入解決看多對(duì)一請(qǐng)求服務(wù)器導(dǎo)致socket連接低效性的問題。
瀏覽器自身也有其DNS緩存(如:IE、Firefox),而它們的配置要在注冊(cè)表中修改。
每次重新啟動(dòng)瀏覽器也就自動(dòng)清空了瀏覽器的DNS緩存,但它不會(huì)清空DNSClient 服務(wù)緩存。
Fasterfox(http://fasterfox.mozdev.org)是一款Firefox的插件,用于測(cè)量和改善Firefox的性能。
DNS將主機(jī)名映射到IP上,連接到瀏覽器的DNS解析器會(huì)返回服務(wù)器的ip地址。一個(gè)url可以對(duì)應(yīng)多個(gè)ip,比如我們的對(duì)應(yīng)59.151.102.207、105、106
DNS解析也是開銷,在DNS查找之前瀏覽器不能從主機(jī)名那里下載到任何東西(這一過程通常需要20到120毫秒),相應(yīng)時(shí)間依賴于DNS解析器,他所能承擔(dān)的請(qǐng)求壓力,你與它之間的距離和你的帶寬速度。實(shí)際中操作系統(tǒng)和瀏覽器做為緩存DNS查找記錄,但是瀏覽器的Keep-Alive屬性會(huì)覆蓋操作系統(tǒng)的緩存過期時(shí)間。
我們可以發(fā)現(xiàn),減少DNS查找和第六章所提到的“并行下載”是矛盾的,這方面做的最好的是google,它只有一次DNS查找,因?yàn)樗?yè)面中只有兩個(gè)組件,所以也不存在影響并行下載的問題。我們的網(wǎng)站不可能只有兩個(gè)組件,所以這里又需要一個(gè)權(quán)衡,本書作者建議使用最少兩個(gè),最多4個(gè)主機(jī)名來平衡。我們使用的是img1到4,4個(gè),和作者的建議相符合。
綜上所述:通過使用keep-Alive和較少的域名可以減少DNS查找。


